継ぎ足しの秘伝のタレは割とすぐに元のタレじゃなくなるらしい
はじめに
X年継ぎ足しの秘伝のタレってありますよね。あれって何年も前のタレは成分としては残ってないらしいです。ちょっとだけ気になるのでシミュレーションで確認してみようと思います。
下ごしらえ
500×500のセルを用意して、初代と二代目以降に異なる値を持たせます。これを世代を追うごとに一定量抜く(使う)、継ぎ足す、混ぜる、を繰り返して、初代がどれくらい残っているかを確認します。
セルの表示は簡単にProcessing(Python mode)でやってしまうことにします。
コード
import random
# field value: 0=void, 1=first gen, 2=other
field = [1 for _ in range(0, 500*500)]
gen = 0
cnt = 500*500
use_amount = 25
def setup():
size(500, 500)
background(0)
noStroke()
def draw():
background(0)
show()
use()
add_on()
mix()
delay(100)
def show():
count = 0
for y in range(0, height):
for x in range(0, width):
if (field[y*width+x] == 1):
count += 1
fill(255, 0, 0)
else:
fill(0, 0, 255)
rect(x, y, 1, 1)
global cnt
cnt = count
def use():
global use_amount
for i in range(width*use_amount):
field[i] = 0
def add_on():
global cnt
global gen
global use_amount
gen = gen + 1
print("gen: "+ str("{:3d}".format(gen)) +
", ratio: " + str("{:.3f}".format(cnt*1.0/width/height*100)) + "%")
for i in range(width*use_amount):
field[i] = 2
def mix():
random.shuffle(field)
こんな感じにしてみました。二重配列のシャッフルのためだけにnumpyを入れたくはなかったので1次元配列で表現しています。個人的には引数じゃなくてglobalで変数渡す方がProcessingぽいと思っています。どっちでもいいけど。(setupとかdrawとかマウス系のハンドラとかは書いている側からはどうにもできないのでどっちでも良くない場面もあります)
use_amountで1日に使うタレの量を決めることができます。500x500の何行分使うかで指定しますが、今回は25行分(全体の5%)でやってみます。
実行
こんな感じで赤(初代)がどんどん青(二代目以降)に置き換わっていく様子がわかります。
とれたデータをグラフにするとこんな感じになりました。
y軸は全体のうち初代の割合(%), x軸は世代です。
この結果から、「毎日5%のタレを使って継ぎ足していくとき、4ヶ月も経てば元のタレの成分はなくなってしまう」と言えます。
終わりに
秘伝のタレをシミュレーションしてみましたが、噂通り成分としては意外とすぐになくなっていそうです。でも気持ちの上では美味しそうな気はします。X年前のものが残っていることではなく、数ヶ月くらい熟成されたものが存在し続けることが重要なんだと思います。多分。